package fr.enseirbmatmeca.apms.hibernate.dao;

import java.util.List;

import fr.enseirbmatmeca.apms.spring.model.project.Project;
import fr.enseirbmatmeca.apms.spring.model.project.ProjectCollection;
import fr.enseirbmatmeca.apms.spring.model.project.ProjectGroup;
import fr.enseirbmatmeca.apms.spring.model.user.User;

/**
 * Allows performing complex actions on persistent data 
 * @author coudar
 */
public interface ProjectDAO {

    public Project createProject(Project project);
    
    public Project getProject(User user);
    
    /**
     * Return the list of projets in which an user is involved
     * @param user the concerned user
     * @return projects in which user is involved 
     */
    public List<Project> getProjects(User user);
    
    public Project updateProject(Project project);
    
    public ProjectCollection createProjectCollection(ProjectCollection pc);
    
    public ProjectGroup createProjectGroup(ProjectGroup pg);
}